package fr.afcepf.ai89.esharing.metier;

import java.util.ArrayList;
import java.util.List;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import fr.afcepf.ai89.esharing.data.IDAOAem;
import fr.afcepf.ai89.esharing.data.IDAOFrNoTel;
import fr.afcepf.ai89.esharing.data.IDAOInvisibiliteProprietaire;
import fr.afcepf.ai89.esharing.data.IDAOProprietaire;
import fr.afcepf.ai89.esharing.data.IDAOSessionProp;
import fr.afcepf.ai89.esharing.entity.FrNoTel;
import fr.afcepf.ai89.esharing.entity.InvisibiliteProprietaire;
import fr.afcepf.ai89.esharing.entity.Proprietaire;
import fr.afcepf.ai89.esharing.entity.SessionProp;

public class BusinessGestionCompte implements IBusinessGestionCompte {
	
	@Override
	public int inscrire(Proprietaire prop) {
		
		int numproprietaire = 0;
		int numTelProp = 0;
		
		try {
			Context ctx;
			ctx = new InitialContext();
			IDAOProprietaire proxyDataProprietaire = null;
			IDAOFrNoTel proxyDataNoTelP = null;
			try {
				proxyDataProprietaire = (IDAOProprietaire)ctx.lookup("java:global/ESharingPhase1/DAOProprietaire!fr.afcepf.ai89.esharing.data.IDAOProprietaire");
				proxyDataNoTelP = (IDAOFrNoTel)ctx.lookup("java:global/ESharingPhase1/DAOFrNoTel!fr.afcepf.ai89.esharing.data.IDAOFrNoTel");
			}
			catch (Exception e) {
				proxyDataProprietaire = (IDAOProprietaire)ctx.lookup("ESharingPhase1/DAOProprietaire!fr.afcepf.ai89.esharing.data.IDAOProprietaire");
				proxyDataNoTelP = (IDAOFrNoTel)ctx.lookup("ESharingPhase1/DAOFrNoTel!fr.afcepf.ai89.esharing.data.IDAOFrNoTel");
			}
			
			if (proxyDataNoTelP.getFrNoTel((int)prop.getFrNoTel1().getNoTelFr()) == null) {
				proxyDataNoTelP.addNoTel(prop.getFrNoTel1());
			}
			
			if (prop.getFrNoTel2() != null) {
			
				if (proxyDataNoTelP.getFrNoTel((int)prop.getFrNoTel2().getNoTelFr()) == null) {
					proxyDataNoTelP.addNoTel(prop.getFrNoTel2());
				}
				
			}
			numproprietaire = proxyDataProprietaire.inscrire(prop);
			
		} catch (NamingException e) {
			e.printStackTrace();
		}
		return numproprietaire;
	}

	@Override
	public int majInfosPersos(Proprietaire prop) {
		int numproprietaireMAJ = 0;
		int numTel1Prop = 0;
		try {
			Context ctx;
			ctx = new InitialContext();
			IDAOProprietaire proxyDataProprietaire = null;
			IDAOFrNoTel proxyDataNoTelP = null;
			try {
				proxyDataProprietaire = (IDAOProprietaire)ctx.lookup("java:global/ESharingPhase1/DAOProprietaire!fr.afcepf.ai89.esharing.data.IDAOProprietaire");
				proxyDataNoTelP = (IDAOFrNoTel)ctx.lookup("java:global/ESharingPhase1/DAOFrNoTel!fr.afcepf.ai89.esharing.data.IDAOFrNoTel");
			}
			catch (Exception e) {
				proxyDataProprietaire = (IDAOProprietaire)ctx.lookup("ESharingPhase1/DAOProprietaire!fr.afcepf.ai89.esharing.data.IDAOProprietaire");
				proxyDataNoTelP = (IDAOFrNoTel)ctx.lookup("ESharingPhase1/DAOFrNoTel!fr.afcepf.ai89.esharing.data.IDAOFrNoTel");
			}
			
			numTel1Prop = (int)prop.getFrNoTel1().getNoTelFr();
			
			if (proxyDataNoTelP.getFrNoTel(numTel1Prop) == null) {
				proxyDataNoTelP.addNoTel(prop.getFrNoTel1());
			}
			
			if (prop.getFrNoTel2() != null) {
			
				if (proxyDataNoTelP.getFrNoTel((int)prop.getFrNoTel2().getNoTelFr()) == null) {
					proxyDataNoTelP.addNoTel(prop.getFrNoTel2());
				}
				
			}
			
			numproprietaireMAJ = proxyDataProprietaire.majInfosPersos(prop);	
			
			
		} catch (NamingException e) {
			e.printStackTrace();
		}
		return numproprietaireMAJ;
	}

	@Override
	public int accepterParrainage(Proprietaire filleul) {
		int numproprietairePrng = 0;
		int numTelProp = 0;
		try {
			Context ctx;
			ctx = new InitialContext();
			IDAOProprietaire proxyDataProprietaire = null;
			IDAOFrNoTel proxyDataNoTelP = null;
		
			try {
				proxyDataProprietaire = (IDAOProprietaire)ctx.lookup("java:global/ESharingPhase1/DAOProprietaire!fr.afcepf.ai89.esharing.data.IDAOProprietaire");
				proxyDataNoTelP = (IDAOFrNoTel)ctx.lookup("java:global/ESharingPhase1/DAOFrNoTel!fr.afcepf.ai89.esharing.data.IDAOFrNoTel");
			}
			catch (Exception e) {
				proxyDataProprietaire = (IDAOProprietaire)ctx.lookup("ESharingPhase1/DAOProprietaire!fr.afcepf.ai89.esharing.data.IDAOProprietaire");
				proxyDataNoTelP = (IDAOFrNoTel)ctx.lookup("java:global/ESharingPhase1/DAOFrNoTel!fr.afcepf.ai89.esharing.data.IDAOFrNoTel");
			}
			
			if (proxyDataNoTelP.getFrNoTel((int)filleul.getFrNoTel1().getNoTelFr()) == null) {
				proxyDataNoTelP.addNoTel(filleul.getFrNoTel1());
			}
			
			if (filleul.getFrNoTel2() != null) {
			
				if (proxyDataNoTelP.getFrNoTel((int)filleul.getFrNoTel2().getNoTelFr()) == null) {
					proxyDataNoTelP.addNoTel(filleul.getFrNoTel2());
				}
				
			}
			
			numproprietairePrng = proxyDataProprietaire.accepterParrainage(filleul);	
		} catch (NamingException e) {
			e.printStackTrace();
		}
		
		return numproprietairePrng;	
	}

	@Override
	public int compteDesactiver(Proprietaire prop) {
		int numproprietaireSorti = 0;
		try {
			Context ctx;
			ctx = new InitialContext();
			IDAOProprietaire proxyDataProprietaire = null;
			IDAOFrNoTel proxyDataNoTelP = null;
			try {
				proxyDataProprietaire = (IDAOProprietaire)ctx.lookup("java:global/ESharingPhase1/DAOProprietaire!fr.afcepf.ai89.esharing.data.IDAOProprietaire");
			}
			catch (Exception e) {
				proxyDataProprietaire = (IDAOProprietaire)ctx.lookup("ESharingPhase1/DAOProprietaire!fr.afcepf.ai89.esharing.data.IDAOProprietaire");
			}
			
			numproprietaireSorti = proxyDataProprietaire.compteDesactiver(prop);	
			
			
		} catch (NamingException e) {
			e.printStackTrace();
		}
		return numproprietaireSorti;
	}

	@Override
	public int reactiverCompte(Proprietaire prop) {
		int numproprietaireRevenu = 0;
		try {
			Context ctx;
			ctx = new InitialContext();
			IDAOProprietaire proxyDataProprietaire = null;
			IDAOFrNoTel proxyDataNoTelP = null;
			try {
				proxyDataProprietaire = (IDAOProprietaire)ctx.lookup("java:global/ESharingPhase1/DAOProprietaire!fr.afcepf.ai89.esharing.data.IDAOProprietaire");
			}
			catch (Exception e) {
				proxyDataProprietaire = (IDAOProprietaire)ctx.lookup("ESharingPhase1/DAOProprietaire!fr.afcepf.ai89.esharing.data.IDAOProprietaire");
			}			
			numproprietaireRevenu = proxyDataProprietaire.reactiverCompte(prop);	

		} catch (NamingException e) {
			e.printStackTrace();
		}
		return numproprietaireRevenu;
	}

	@Override
	public int addInvisProp(InvisibiliteProprietaire invisProp) {

		int idInvis = 0;
		
		try {
			
			Context ctx;
			ctx = new InitialContext();
			
			IDAOInvisibiliteProprietaire proxyDataInvisibiliteProprietaire = null;
			
			try {
				
				proxyDataInvisibiliteProprietaire = (IDAOInvisibiliteProprietaire)ctx.lookup("java:global/ESharingPhase1/DAOInvisibiliteProprietaire!fr.afcepf.ai89.esharing.data.IDAOInvisibiliteProprietaire");
			
			}
			catch (Exception e) {
				
				proxyDataInvisibiliteProprietaire = (IDAOInvisibiliteProprietaire)ctx.lookup("ESharingPhase1/DAOInvisibiliteProprietaire!fr.afcepf.ai89.esharing.data.IDAOInvisibiliteProprietaire");
			
			}	
			
			idInvis = proxyDataInvisibiliteProprietaire.addInvisProp(invisProp);	

		} catch (NamingException e) {
			
			e.printStackTrace();
			
		}
		
		return idInvis;

	}

	@Override
	public int majInvisProp(InvisibiliteProprietaire invisProp) {

		int idInvis = 0;
		
		try {
			
			Context ctx;
			ctx = new InitialContext();
			
			IDAOInvisibiliteProprietaire proxyDataInvisibiliteProprietaire = null;
			
			try {
				
				proxyDataInvisibiliteProprietaire = (IDAOInvisibiliteProprietaire)ctx.lookup("java:global/ESharingPhase1/DAOInvisibiliteProprietaire!fr.afcepf.ai89.esharing.data.IDAOInvisibiliteProprietaire");
			
			}
			catch (Exception e) {
				
				proxyDataInvisibiliteProprietaire = (IDAOInvisibiliteProprietaire)ctx.lookup("ESharingPhase1/DAOInvisibiliteProprietaire!fr.afcepf.ai89.esharing.data.IDAOInvisibiliteProprietaire");
			
			}	
			
			idInvis = proxyDataInvisibiliteProprietaire.majInvisProp(invisProp);	

		} catch (NamingException e) {
			
			e.printStackTrace();
			
		}
		
		return idInvis;

	}

	@Override
	public int retirerInvisProp(InvisibiliteProprietaire invisProp) {

		int idInvis = 0;
		
		try {
			
			Context ctx;
			ctx = new InitialContext();
			
			IDAOInvisibiliteProprietaire proxyDataInvisibiliteProprietaire = null;
			
			try {
				
				proxyDataInvisibiliteProprietaire = (IDAOInvisibiliteProprietaire)ctx.lookup("java:global/ESharingPhase1/DAOInvisibiliteProprietaire!fr.afcepf.ai89.esharing.data.IDAOInvisibiliteProprietaire");
			
			}
			catch (Exception e) {
				
				proxyDataInvisibiliteProprietaire = (IDAOInvisibiliteProprietaire)ctx.lookup("ESharingPhase1/DAOInvisibiliteProprietaire!fr.afcepf.ai89.esharing.data.IDAOInvisibiliteProprietaire");
			
			}	
			
			idInvis = proxyDataInvisibiliteProprietaire.retirerInvisProp(invisProp);	

		} catch (NamingException e) {
			
			e.printStackTrace();
			
		}
		
		return idInvis;

	}

	@Override
	public Proprietaire getMesInfos(int idProp) {
		Proprietaire prop = new Proprietaire();
		try {
			Context ctx;
			ctx = new InitialContext();
			IDAOProprietaire proxyDataProprietaire = null;
			IDAOFrNoTel proxyDataNoTelP = null;
			try {
				proxyDataProprietaire = (IDAOProprietaire)ctx.lookup("java:global/ESharingPhase1/DAOProprietaire!fr.afcepf.ai89.esharing.data.IDAOProprietaire");
			}
			catch (Exception e) {
				proxyDataProprietaire = (IDAOProprietaire)ctx.lookup("ESharingPhase1/DAOProprietaire!fr.afcepf.ai89.esharing.data.IDAOProprietaire");
			}
			
			prop = proxyDataProprietaire.getProp(idProp);	
		} catch (NamingException e) {
			e.printStackTrace();
		}
		return prop;
	}

	@Override
	public List<InvisibiliteProprietaire> getConges(Proprietaire prop) {

		List<InvisibiliteProprietaire> invis = new ArrayList<InvisibiliteProprietaire>();
		
		try {
			
			Context ctx;
			ctx = new InitialContext();
			
			IDAOInvisibiliteProprietaire proxyDataInvisibiliteProprietaire = null;
			
			try {
				
				proxyDataInvisibiliteProprietaire = (IDAOInvisibiliteProprietaire)ctx.lookup("java:global/ESharingPhase1/DAOInvisibiliteProprietaire!fr.afcepf.ai89.esharing.data.IDAOInvisibiliteProprietaire");
			
			}
			catch (Exception e) {
				
				proxyDataInvisibiliteProprietaire = (IDAOInvisibiliteProprietaire)ctx.lookup("ESharingPhase1/DAOInvisibiliteProprietaire!fr.afcepf.ai89.esharing.data.IDAOInvisibiliteProprietaire");
			
			}	
			
			invis = proxyDataInvisibiliteProprietaire.getInvisProp(prop);	

		} catch (NamingException e) {
			
			e.printStackTrace();
			
		}
		
		return invis;

	}

	@Override
	public int connexion(String nom, String mdp) {
		
		int i = -1;
		SessionProp logIn = new SessionProp();
		
		try {
			
			Context ctx;
			ctx = new InitialContext();
			
			IDAOProprietaire proxyDataProprietaire = null;
			IDAOSessionProp proxySessionProp = null;
			
			try {
				
				proxyDataProprietaire = (IDAOProprietaire)ctx.lookup("java:global/ESharingPhase1/DAOProprietaire!fr.afcepf.ai89.esharing.data.IDAOProprietaire");
				proxySessionProp = (IDAOSessionProp)ctx.lookup("java:global/ESharingPhase1/DAOSessionProp!fr.afcepf.ai89.esharing.data.IDAOSessionProp");
			
			}
			catch (Exception e) {
				
				proxyDataProprietaire = (IDAOProprietaire)ctx.lookup("java:global/ESharingPhase1/DAOProprietaire!fr.afcepf.ai89.esharing.data.IDAOProprietaire");
				proxySessionProp = (IDAOSessionProp)ctx.lookup("java:global/ESharingPhase1/DAOSessionProp!fr.afcepf.ai89.esharing.data.IDAOSessionProp");
			
			}	
			
			i = proxyDataProprietaire.login(nom, mdp);
			//TODO: add provisions for web session and login

		} catch (NamingException e) {
			
			e.printStackTrace();
			
		}
		
		return i;
		
	}

}
